/*
 * This file Copyright (c) 2015. Walle.
 * (http://www.wallellen.com). All rights reserved.
 *
 *
 * This file is dual-licensed under both the
 * Walle Agreement (WA) and the GNU General Public License.
 * You may elect to use one or the other of these licenses.
 *
 * This file is distributed in the hope that it will be
 * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
 * Redistribution, except as permitted by whichever of the GPL
 * or WA you select, is prohibited.
 *
 * 1. For the GPL license (GPL), you can redistribute and/or
 * modify this file under the terms of the GNU General
 * Public License, Version 3, as published by the Free Software
 * Foundation.  You should have received a copy of the GNU
 * General Public License, Version 3 along with this program;
 * if not, write to the Free Software Foundation, Inc., 51
 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * 2. For the Walle Agreement (WA), this file
 * and the accompanying materials are made available under the
 * terms of the WA which accompanies this distribution, and
 * is available at http://www.wallellen.com/agreement.html
 *
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 */

/**
 *
 */
package com.wallellen.wechat.response;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;


/**
 * 用于回复的基本消息类型
 *
 * @author <a href="mailto:wallellen@hotmail.com">WALLE</a>
 * @date 2014-12-4
 */
@XmlRootElement(name = "xml")
public class WechatResponse {

    private String ToUserName;
    private String FromUserName;
    private String CreateTime;
    private String MsgType;
    private String Content;
    private String ArticleCount;

    private ImageResponse Image;
    private VoiceResponse Voice;
    private VideoResponse Video;
    private MusicResponse Music;
    private List<ArticleResponse> article;
    private TransInfoResponse TransInfo;


    public static String[] CDATA_TAG = {"ToUserName",
            "FromUserName", "MsgType", "Event", "MsgId", "Content", "MediaId", "Title", "Description", "MusicUrl", "HQMusicUrl", "ThumbMediaId",
            "PicUrl", "Url"
    };


    @XmlElement(name = "ToUserName")
    public String getToUserName() {
        return ToUserName;
    }

    public void setToUserName(String toUserName) {
        ToUserName = toUserName;
    }

    @XmlElement(name = "FromUserName")
    public String getFromUserName() {
        return FromUserName;
    }

    public void setFromUserName(String fromUserName) {
        FromUserName = fromUserName;
    }

    @XmlElement(name = "CreateTime")
    public String getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(String createTime) {
        CreateTime = createTime;
    }

    @XmlElement(name = "MsgType")
    public String getMsgType() {
        return MsgType;
    }

    public void setMsgType(String msgType) {
        MsgType = msgType;
    }

    @XmlElement(name = "Content")
    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    @XmlElement(name = "ArticleCount")
    public String getArticleCount() {
        return ArticleCount;
    }

    public void setArticleCount(String articleCount) {
        ArticleCount = articleCount;
    }

    @XmlElement(name = "Image")
    public ImageResponse getImage() {
        return Image;
    }

    public void setImage(ImageResponse image) {
        Image = image;
    }

    @XmlElement(name = "Voice")
    public VoiceResponse getVoice() {
        return Voice;
    }

    public void setVoice(VoiceResponse voice) {
        Voice = voice;
    }

    @XmlElement(name = "Video")
    public VideoResponse getVideo() {
        return Video;
    }

    public void setVideo(VideoResponse video) {
        Video = video;
    }

    @XmlElement(name = "Music")
    public MusicResponse getMusic() {
        return Music;
    }

    public void setMusic(MusicResponse music) {
        Music = music;
    }

    @XmlElementWrapper(name = "Articles")
    @XmlElement(name = "item")
    public List<ArticleResponse> getArticle() {
        return article;
    }

    public void setArticle(List<ArticleResponse> article) {
        this.article = article;
    }

    @XmlElement(name = "TransInfo")
    public TransInfoResponse getTransInfo() {
        return TransInfo;
    }

    public void setTransInfo(TransInfoResponse transInfo) {
        TransInfo = transInfo;
    }


}
